package com.millstein.tsinglog.service;

import com.millstein.tsinglog.model.dto.tag.TagSaveDTO;
import com.millstein.tsinglog.model.pojo.Tag;
import com.millstein.tsinglog.model.vo.biz.TagVo;
import com.millstein.tsinglog.model.vo.result.PageResult;

import java.util.List;
import java.util.Map;

public interface TagService {
    /**
     * 分页并条件查询标签的信息
     * @param currentPage 当前页
     * @param pageSize 每页的数据量
     * @param keyword 搜索关键字
     * @param cid 按照分类搜索标签
     * @return
     */
    PageResult<TagVo> getTagByPage(Integer currentPage, Integer pageSize, String keyword, Long cid);

    /**
     * 根据分类id查询已启用的标签信息
     * @param cid 分类id
     * @return
     */
    List<Tag> getTagByCid(Long cid);

    /**
     * 新增标签信息
     * @param tagSaveDTO 标签信息
     */
    void insertTag(TagSaveDTO tagSaveDTO);

    /**
     * 修改标签的启用状态
     * @param id 标签id
     * @param usable 是否启用，1启用，0不启用
     */
    void changeUsable(Long id, Short usable);

    /**
     * 根据ids删除对应的标签信息
     * @param ids 存放id的集合
     */
    void deleteByIds(List<Long> ids);

    /**
     * 根据id查询标签
     * @param id 标签id
     * @return
     */
    Tag getTagById(Long id);

    /**
     * 修改标签
     * @param tagSaveDTO 需要修改的标签信息
     */
    void updateTag(TagSaveDTO tagSaveDTO);

    /**
     * 为前端页面准备标签信息
     * @return
     */
    Map<String, Object> getTagListForPortal();

    /**
     * 根据tids为文章提供标签信息
     * @param tags
     * @return
     */
    List<Tag> getTagInfoByTids(List<Long> tags);
}
